/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.cip.esymons.eventos.be;

import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.DiscriminatorColumn;
import javax.persistence.DiscriminatorType;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
import org.cip.esymons.general.be.ConsejoDepartamental;
import org.cip.esymons.tesoreria.be.CajaChica;
import org.cip.esymons.tesoreria.be.CuentaEgreso;
import org.cip.esymons.tesoreria.be.CuentaingresoEvento;
import org.cip.esymons.tesoreria.be.DetCajaChica;

/**
 *
 * @author oscar
 */
@Entity
@Table(name = "eca_evento")
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "eve_tipo", discriminatorType = DiscriminatorType.STRING)
@DiscriminatorValue("EV")
//@NamedQueries({@NamedQuery(name = "Evento.findAll", query = "SELECT e FROM Evento e"), @NamedQuery(name = "Evento.findByEveCodigo", query = "SELECT e FROM Evento e WHERE e.eveCodigo = :eveCodigo"), @NamedQuery(name = "Evento.findByEveTipo", query = "SELECT e FROM Evento e WHERE e.eveTipo = :eveTipo"), @NamedQuery(name = "Evento.findByEveEstado", query = "SELECT e FROM Evento e WHERE e.eveEstado = :eveEstado"), @NamedQuery(name = "Evento.findByEveFecharegistro", query = "SELECT e FROM Evento e WHERE e.eveFecharegistro = :eveFecharegistro")})
public class Evento implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "eve_codigo")
    protected Integer eveCodigo;
    @Basic(optional = false)
    @Column(name = "eve_estado")
    private Integer eveEstado;
    @Column(name = "eve_fecharegistro")
    @Temporal(TemporalType.DATE)
    private Date eveFecharegistro;
    @JoinColumn(name = "eve_codigo", referencedColumnName = "pre_codigo", insertable = false, updatable = false)
    @OneToOne(optional = false, fetch = FetchType.LAZY)
    private Preevento preevento;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "fkEveCodigo", fetch = FetchType.LAZY)
    private List<CuentaingresoEvento> cuentaingresoEventoCollection;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "evento", fetch = FetchType.LAZY)
    private List<PreinscripcionEvento> preInscripcionEventoCollection;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "evento", fetch = FetchType.LAZY)
    private List<CajaChica> ListaCajasChicas;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "evento", fetch = FetchType.LAZY)
    private List<DetCajaChica> ListaDetallesCajaChica;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "eventoRelacionado", fetch = FetchType.LAZY)
    private List<CuentaEgreso> ListaCuentasEgreso;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "eveCodigo", fetch = FetchType.LAZY)
    private List<DirectorioInvitacion> listaDirectorioInvitacion;
    @Transient
    private Long cantidad;
    @Transient
    private String coordinaciones;
    @Transient
    private String tema;
    @Transient
    private String tipo;
    @Transient
    private String fechaEvento;
    @Transient
    private ConsejoDepartamental consejo;
    @Transient
    private String organizador;
    @Transient
    private String fechaInicio="";
    @Transient
    private String fechaFin="";
    @Transient
    private String desde="";
    @Transient
    private String hasta="";

    public Evento() {
    }

    public Evento(Integer eveCodigo) {
        this.eveCodigo = eveCodigo;
    }

    public Evento(Integer eveCodigo, Integer eveEstado) {
        this.eveCodigo = eveCodigo;
        this.eveEstado = eveEstado;
    }

    public String getDesde() {
        return desde;
    }

    public void setDesde(String desde) {
        this.desde = desde;
    }

    public String getFechaFin() {
        return fechaFin;
    }

    public void setFechaFin(String fechaFin) {
        this.fechaFin = fechaFin;
    }

    public String getFechaInicio() {
        return fechaInicio;
    }

    public void setFechaInicio(String fechaInicio) {
        this.fechaInicio = fechaInicio;
    }

    public String getHasta() {
        return hasta;
    }

    public void setHasta(String hasta) {
        this.hasta = hasta;
    }

    public String getOrganizador() {
        return organizador;
    }

    public void setOrganizador(String organizador) {
        this.organizador = organizador;
    }

    public ConsejoDepartamental getConsejo() {
        return consejo;
    }

    public void setConsejo(ConsejoDepartamental consejo) {
        this.consejo = consejo;
    }

    public String getTipo() {
        return preevento.getTevCodigo().getTevNombre();
    }

    public void setTipo(String tipo) {
        this.tipo = tipo;
    }

    public String getFechaEvento() {
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        if (preevento.getPrefechaInicio().equals(preevento.getPrefechaFin())) {
            fechaEvento = sdf.format(preevento.getPrefechaInicio());
        } else {
            fechaEvento = sdf.format(preevento.getPrefechaInicio()) + "-" + sdf.format(preevento.getPrefechaFin());
        }
        return fechaEvento;
    }

    public void setFechaEvento(String fechaEvento) {
        this.fechaEvento = fechaEvento;
    }

    public String getTema() {
        return preevento.getPreNombre();
    }

    public void setTema(String tema) {
        this.tema = tema;
    }

    public String getCoordinaciones() {
        return coordinaciones;
    }

    public void setCoordinaciones(String coordinaciones) {
        this.coordinaciones = coordinaciones;
    }

    public List<PreinscripcionEvento> getPreInscripcionEventoCollection() {
        return preInscripcionEventoCollection;
    }

    public void setPreInscripcionEventoCollection(List<PreinscripcionEvento> preInscripcionEventoCollection) {
        this.preInscripcionEventoCollection = preInscripcionEventoCollection;
    }

    public Long getCantidad() {
        return cantidad;
    }

    public void setCantidad(Long cantidad) {
        this.cantidad = cantidad;
    }

    public Integer getEveCodigo() {
        return eveCodigo;
    }

    public void setEveCodigo(Integer eveCodigo) {
        this.eveCodigo = eveCodigo;
    }

//    public String getEveTipo() {
//        return eveTipo;
//    }
//
//    public void setEveTipo(String eveTipo) {
//        this.eveTipo = eveTipo;
//    }
    public Integer getEveEstado() {
        return eveEstado;
    }

    public void setEveEstado(Integer eveEstado) {
        this.eveEstado = eveEstado;
    }

    public Date getEveFecharegistro() {
        return eveFecharegistro;
    }

    public void setEveFecharegistro(Date eveFecharegistro) {
        this.eveFecharegistro = eveFecharegistro;
    }

    public Preevento getPreevento() {
        return preevento;
    }

    public void setPreevento(Preevento preevento) {
        this.preevento = preevento;
    }

    public List<CuentaingresoEvento> getCuentaingresoEventoCollection() {
        return cuentaingresoEventoCollection;
    }

    public void setCuentaingresoEventoCollection(List<CuentaingresoEvento> cuentaingresoEventoCollection) {
        this.cuentaingresoEventoCollection = cuentaingresoEventoCollection;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (eveCodigo != null ? eveCodigo.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Evento)) {
            return false;
        }
        Evento other = (Evento) object;
        if ((this.eveCodigo == null && other.eveCodigo != null) || (this.eveCodigo != null && !this.eveCodigo.equals(other.eveCodigo))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "org.cip.esymons.eventos.be.Evento[eveCodigo=" + eveCodigo + "]";
    }

    public List<CajaChica> getListaCajasChicas() {
        return ListaCajasChicas;
    }

    public void setListaCajasChicas(List<CajaChica> ListaCajasChicas) {
        this.ListaCajasChicas = ListaCajasChicas;
    }

    public List<DetCajaChica> getListaDetallesCajaChica() {
        return ListaDetallesCajaChica;
    }

    public void setListaDetallesCajaChica(List<DetCajaChica> ListaDetallesCajaChica) {
        this.ListaDetallesCajaChica = ListaDetallesCajaChica;
    }

    public List<CuentaEgreso> getListaCuentasEgreso() {
        return ListaCuentasEgreso;
    }

    public void setListaCuentasEgreso(List<CuentaEgreso> ListaCuentasEgreso) {
        this.ListaCuentasEgreso = ListaCuentasEgreso;
    }

    public List<DirectorioInvitacion> getListaDirectorioInvitacion() {
        return listaDirectorioInvitacion;
    }

    public void setListaDirectorioInvitacion(List<DirectorioInvitacion> listaDirectorioInvitacion) {
        this.listaDirectorioInvitacion = listaDirectorioInvitacion;
    }



}
